﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

/*    
 * @author Peng Wang
 * @version 1.0.0
*/

namespace vxi.chat.library
{   
    public class VxiDefine
    {
        public static string SERVER_NAME = System.Net.Dns.GetHostName();

        public static int SERVER_PORT = 2280;

        public static int SERVER_SYNC_PROT = 4560;

        public static List<IPEndPoint> SERVER_SYNC_NET = new List<IPEndPoint>();

        public class Event
        {


            public class Domain
            {
                public const int VXI_EVT_DOMAIN_CHAT = 0x14000;     ///< 域：聊天系统事件
            }

            public class Head
            {
                public const String DOMAIN = "domain";
                public const String TYPE   = "type";
                public const String EVENT  = "event";
                public const String REFID  = "ref";
            }

            public class Type
            {
                public const int VXI_EVT_TYPE_NOTIFY    = 0x100;       ///< 类型：状态变化通知
                public const int VXI_EVT_TYPE_REQUEST   = 0x200;       ///< 类型：操作请求
                public const int VXI_EVT_TYPE_ECHO      = 0x300;       ///< 类型：操作反馈事件
                public const int VXI_EVT_TYPE_QUERY     = 0x400;       ///< 类型：查询操作请求
                public const int VXI_EVT_TYPE_HEARTBEAT = 0x500;       ///< 类型：心跳事件
            }

            /// <summary>
            /// 操作请求事件定义：Event.Type.VXI_EVT_TYPE_REQUEST + <index>
            /// </summary>
            public class Reuqest
            {
                public const int VXI_EVT_CHAT_REGISTET_REQ             = (Type.VXI_EVT_TYPE_REQUEST + 0x01);  ///< 用户注册请求操作
                public const int VXI_EVT_CHAT_UNREGISTET_REQ           = (Type.VXI_EVT_TYPE_REQUEST + 0x02);  ///< 用户注销请求操作
                public const int VXI_EVT_CHAT_SET_AGENT_STATE_REQ      = (Type.VXI_EVT_TYPE_REQUEST + 0x03);  ///< 改变坐席状态请求操作
                public const int VXI_EVT_CHAT_START_SESSION_REQ        = (Type.VXI_EVT_TYPE_REQUEST + 0x04);  ///< 建立会话请求操作
                public const int VXI_EVT_CHAT_STOP_SESSION_REQ         = (Type.VXI_EVT_TYPE_REQUEST + 0x05);  ///< 停止会话请求操作
                public const int VXI_EVT_CHAT_SEND_MESSAGE_REQ         = (Type.VXI_EVT_TYPE_REQUEST + 0x06);  ///< 发送消息请求操作
                public const int VXI_EVT_CHAT_PUNCH_HOLE_REQ           = (Type.VXI_EVT_TYPE_REQUEST + 0x07);  ///< 打洞请求操作
                public const int VXI_EVT_CHAT_MONITOR_SESSION_REQ      = (Type.VXI_EVT_TYPE_REQUEST + 0x08);  ///< 监听会话请求操作
                public const int VXI_EVT_CHAT_CONFERENCE_SESSION_REQ   = (Type.VXI_EVT_TYPE_REQUEST + 0x09);  ///< 建立会话会议请求操作
                public const int VXI_EVT_CHAT_TRANSFER_SESSION_REQ     = (Type.VXI_EVT_TYPE_REQUEST + 0x0A);  ///< 会话转移请求操作
                public const int VXI_EVT_CHAT_QUERY_LOGIN_LIST_REQ     = (Type.VXI_EVT_TYPE_REQUEST + 0x0B);  ///< 查询登陆坐席数请求操作
                public const int VXI_EVT_CHAT_QUERY_AGENT_STATE_REQ    = (Type.VXI_EVT_TYPE_REQUEST + 0x0C);  ///< 查询坐席状态请求操作
                public const int VXI_EVT_CHAT_SEND_BINARY_REQ          = (Type.VXI_EVT_TYPE_REQUEST + 0x0D);  ///< 发送二进制数据请求操作
                public const int VXI_EVT_CHAT_START_AUDIO_REQ          = (Type.VXI_EVT_TYPE_REQUEST + 0x0E);  ///< 启动语音对话请求操作
                public const int VXI_EVT_CHAT_STOP_AUDIO_REQ           = (Type.VXI_EVT_TYPE_REQUEST + 0x0F);  ///< 结束语音对话请求操作
                public const int VXI_EVT_CHAT_START_AUDIO_REPLY_REQ    = (Type.VXI_EVT_TYPE_REQUEST + 0x10);  ///< 启动语音对话应答请求操作
            }

            /// <summary>  
            /// 操作请求反馈事件定义： VXI_EVT_TYPE_ECHO + <index>
            /// </summary>
            public class Echo
            {
                public const int VXI_EVT_CHAT_REGISTET_ECHO                = (Type.VXI_EVT_TYPE_ECHO + 0x01);  ///< 用户注册请求确认
                public const int VXI_EVT_CHAT_UNREGISTET_ECHO              = (Type.VXI_EVT_TYPE_ECHO + 0x02);  ///< 用户注销请求确认
                public const int VXI_EVT_CHAT_SET_AGENT_STATE_ECHO         = (Type.VXI_EVT_TYPE_ECHO + 0x03);  ///< 改变坐席状态请求确认
                public const int VXI_EVT_CHAT_START_SESSION_ECHO           = (Type.VXI_EVT_TYPE_ECHO + 0x04);  ///< 建立会话请求操作确认
                public const int VXI_EVT_CHAT_STOP_SESSION_ECHO            = (Type.VXI_EVT_TYPE_ECHO + 0x05);  ///< 停止会话请求操作确认
                public const int VXI_EVT_CHAT_SEND_MESSAGE_ECHO            = (Type.VXI_EVT_TYPE_ECHO + 0x06);  ///< 发送消息请求操作确认
                public const int VXI_EVT_CHAT_PUNCH_HOLE_ECHO              = (Type.VXI_EVT_TYPE_ECHO + 0x07);  ///< 打洞请求操作确认
                public const int VXI_EVT_CHAT_MONITOR_SESSION_ECHO         = (Type.VXI_EVT_TYPE_ECHO + 0x08);  ///< 监听会话请求操作确认
                public const int VXI_EVT_CHAT_CONFERENCE_SESSION_ECHO      = (Type.VXI_EVT_TYPE_ECHO + 0x09);  ///< 建立会话会议请求操作确认
                public const int VXI_EVT_CHAT_TRANSFER_SESSION_ECHO        = (Type.VXI_EVT_TYPE_ECHO + 0x0A);  ///< 会话转移请求操作确认
                public const int VXI_EVT_CHAT_QUERY_LOGIN_LIST_ECHO        = (Type.VXI_EVT_TYPE_ECHO + 0x0B);  ///< 查询登陆坐席数请求操作确认
                public const int VXI_EVT_CHAT_QUERY_AGENT_STATE_ECHO       = (Type.VXI_EVT_TYPE_ECHO + 0x0C);  ///< 查询坐席状态请求操作确认                                                                                                          
                public const int VXI_EVT_CHAT_SEND_BINARY_ECHO             = (Type.VXI_EVT_TYPE_ECHO + 0x0D);  ///< 发送二进制数据请求操作确认
                public const int VXI_EVT_CHAT_START_AUDIO_ECHO             = (Type.VXI_EVT_TYPE_ECHO + 0x0E);  ///< 启动语音对话请求操作确认
                public const int VXI_EVT_CHAT_STOP_AUDIO_ECHO              = (Type.VXI_EVT_TYPE_ECHO + 0x0F);  ///< 结束语音对话请求操作确认
                public const int VXI_EVT_CHAT_START_AUDIO_REPLY_ECHO       = (Type.VXI_EVT_TYPE_ECHO + 0x10);  ///< 启动语音对话应答请求操作确认
            }

            /// <summary>
            /// 状态变化通知事件定义： Type.VXI_EVT_TYPE_NOTIFY + <index>
            /// </summary>
            public class Notify
            {
                public const int VXI_EVT_CHAT_AGENT_LOGGED_ON          = (Type.VXI_EVT_TYPE_NOTIFY + 0x01); ///< 坐席登陆事件
                public const int VXI_EVT_CHAT_AGENT_LOGGED_OFF         = (Type.VXI_EVT_TYPE_NOTIFY + 0x02); ///< 坐席登出事件
                public const int VXI_EVT_CHAT_AGENT_READY              = (Type.VXI_EVT_TYPE_NOTIFY + 0x03); ///< 坐席准备好事件
                public const int VXI_EVT_CHAT_AGENT_NOT_READY          = (Type.VXI_EVT_TYPE_NOTIFY + 0x04); ///< 坐席置忙事件
                public const int VXI_EVT_CHAT_AGENT_BUSY               = (Type.VXI_EVT_TYPE_NOTIFY + 0x05); ///< 坐席忙事件
                public const int VXI_EVT_CHAT_SESSION_STATE_CHG        = (Type.VXI_EVT_TYPE_NOTIFY + 0x06); ///< 会话状态变化事件
                public const int VXI_EVT_CHAT_AUDIO_STATE_CHG          = (Type.VXI_EVT_TYPE_NOTIFY + 0x07); ///< 语音通话状态变化事件
            }

            /// <summary>
            /// 心跳事件定义： Type.VXI_EVT_TYPE_HEARTBEAT + <index>
            /// </summary>
            public class HeartBeat
            {
                public const int VXI_EVT_CHAT_HEARTBEAT_HEAT = (Type.VXI_EVT_TYPE_HEARTBEAT + 0x01);  ///< 用户心跳事件
            }


            /// <summary>
            /// 事件类实体选项常量名称的定义
            /// </summary>
            public class Item
            {
                public const string VXI_EVT_ITEM_USER         = "usr";
                public const string VXI_EVT_ITEM_USER_TYPE    = "usrtype";
                public const string VXI_EVT_ITEM_PASSWORD     = "pwd";
                public const string VXI_EVT_ITEM_SKILL        = "skill";
                public const string VXI_EVT_ITEM_IPADDR       = "ipaddr";
                public const string VXI_EVT_ITEM_PORT         = "port";
                public const string VXI_EVT_ITEM_UDP_PORT     = "port.udp";
                public const string VXI_EVT_ITEM_MODE         = "mode";
                public const string VXI_EVT_ITEM_SESSION_ID   = "sessionid";
                public const string VXI_EVT_ITEM_TEXT         = "text";
                public const string VXI_EVT_ITEM_CAUSE        = "cause";
                public const string VXI_EVT_ITEM_RESULT       = "result";
                public const string VXI_EVT_ITEM_AGENT_STATE  = "agt.state";
                public const string VXI_EVT_ITEM_STATUS       = "status";
                public const string VXI_EVT_ITEM_CONTENT      = "content";
            }

            /// <summary>
            /// socket包头尾定义
            /// </summary>
            public class SocekPackage
            {
                public const string BEGIN           = "<socket-data>";
                public const string END             = "</socket-data>";
                public const string ENCRYPT_BEGIN   = "<encrypt>";
                public const string ENCRYPT_END     = "</encrypt>";
            }

            /// <summary>
            /// 用户类型
            /// </summary>
            public class UserType
            {
                public const int VXI_CHAT_USER_TYPE_NULL       = 0;
                public const int VXI_CHAT_USER_TYPE_AGENT      = 1;
                public const int VXI_CHAT_USER_TYPE_SUPERVISOR = 2;
                public const int VXI_CHAT_USER_TYPE_CUSTOMER   = 3;
            }

            /// <summary>
            /// 坐席状态定义
            /// </summary>
            public class AgentState
            {
                public const int VXI_CHAT_AGENT_STATE_NULL      = 0;
                public const int VXI_CHAT_AGENT_STATE_LOGIN     = 1;
                public const int VXI_CHAT_AGENT_STATE_LOGOUT    = 2;
                public const int VXI_CHAT_AGENT_STATE_READY     = 3;
                public const int VXI_CHAT_AGENT_STATE_NOT_READY = 4;
                public const int VXI_CHAT_AGENT_STATE_BUSY      = 5;
            }

            /// <summary>
            /// 会话状态定义
            /// </summary>
            public class SessionState
            {
                public const int VXI_CHAT_SESSION_STATE_NULL    = 0;           ///< 会话状态空
                public const int VXI_CHAT_SESSION_STATE_PENDING = 1;           ///< 会话状态挂起
                public const int VXI_CHAT_SESSION_STATE_TALKING = 2;           ///< 会话状态通话中
            }

            /// <summary>
            /// 操作请求反馈定义
            /// </summary>
            public class ResultType
            {
                public const string VXI_EVT_ITEM_RESP_FAIL        = "fail";    ///< 操作请求反馈（失败）
                public const string VXI_EVT_ITEM_RESP_OK          = "ok";      ///< 操作请求反馈（成功）
            }

            /// <summary>
            /// 语音通话状态定义
            /// </summary>
            public class ChatAudioState
            {
                public const int VXI_CHAT_AUDIO_STATE_NULL        = 0;
                public const int VXI_CHAT_AUDIO_STATE_START       = 1;
                public const int VXI_CHAT_AUDIO_STATE_STOP        = 2;
            }


            #region 事件详细描述

            /// ----------------------操作请求事件------------------------
           /**
            * 用户注册请求操作描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_REGISTET_REQ
            * body:
            *       VXI_EVT_ITEM_USER
            *       VXI_EVT_ITEM_PASSWORD
            *       VXI_EVT_ITEM_SKILL
            *       VXI_EVT_ITEM_IPADDR
            *       VXI_EVT_ITEM_UDP_PORT 
            *       VXI_EVT_ITEM_USER_TYPE
            */

           /**
            * 用户注销请求操作描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_UNREGISTET_REQ
            * body:
            *       VXI_EVT_ITEM_USER
            *       VXI_EVT_ITEM_SKILL
            */

           /**
            * 改变坐席状态请求描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_SET_AGENT_STATE_REQ
            * body:
            *       VXI_EVT_ITEM_USER
            *       VXI_EVT_ITEM_USER_TYPE
            *       VXI_EVT_ITEM_AGENT_STATE
            *       VXI_EVT_ITEM_SKILL
            */

           /**
            * 建立会话请求描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_START_SESSION_REQ
            * body:
            *       VXI_EVT_ITEM_USER
            */

           /**
            * 停止会话请求描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_STOP_SESSION_REQ
            * body:
            *       VXI_EVT_ITEM_USER
            *       VXI_EVT_ITEM_SESSION_ID
            */

           /**
            * 发送消息请求描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_SEND_MESSAGE_REQ
            * body:
            *       VXI_EVT_ITEM_USER
            *       VXI_EVT_ITEM_SESSION_ID
            *       VXI_EVT_ITEM_TEXT
            */

           /**
            * 打洞消息请求描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_PUNCH_HOLE_REQ
            * body:
            *       VXI_EVT_ITEM_USER 
            *       VXI_EVT_ITEM_SESSION_ID
            *       VXI_EVT_ITEM_IPADDR
            *       VXI_EVT_ITEM_UDP_PORT
            */

           /**
            * 监听会话请求描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_MONITOR_SESSION_REQ
            * body:
            *       VXI_EVT_ITEM_USER 
            *       VXI_EVT_ITEM_SESSION_ID
            *       VXI_EVT_ITEM_IPADDR
            *       VXI_EVT_ITEM_UDP_PORT
            */

           /**
            * 建立会话会议请求描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_CONFERENCE_SESSION_REQ
            * body:
            *       
            *       
            */

           /**
            * 会话转移请求操作描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_TRANSFER_SESSION_REQ
            * body:
            *       VXI_EVT_ITEM_USER 
            *       VXI_EVT_ITEM_SESSION_ID
            */

           /**
            * 查询登陆坐席数请求操作描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_QUERY_LOGIN_LIST_REQ
            * body:
            *       
            */

           /**
            * 查询坐席状态请求操作描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_QUERY_AGENT_STATE_REQ
            * body:
            *       VXI_EVT_ITEM_USER   
            */

           /**
            * 发送二进制数据请求操作
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_SEND_BINARY_REQ
            * body:
            *       VXI_EVT_ITEM_USER
            *       VXI_EVT_ITEM_SESSION_ID
            *       VXI_EVT_ITEM_CONTENT
            */

           /**
            * 启动语音对话请求操作
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_START_AUDIO_REQ
            * body:
            *       VXI_EVT_ITEM_USER
            *       VXI_EVT_ITEM_SESSION_ID
            */

            /**
            * 启动语音对话应答请求操作
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_REQUEST
            *       event_name: VXI_EVT_CHAT_START_AUDIO_REPLY_REQ 
            * body:
            *       VXI_EVT_ITEM_USER
            *       VXI_EVT_ITEM_SESSION_ID
            *       VXI_EVT_ITEM_RESULT
            */

           /**
            * 用户注册请求确认描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_REGISTET_ECHO
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 用户注销请求确认描述.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_UNREGISTET_ECHO
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 改变坐席状态请求确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_SET_AGENT_STATE_ECHO
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 建立会话请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_START_SESSION_ECHO
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE 
            *       VXI_EVT_ITEM_SESSION_ID
            */

           /**
            * 停止会话请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_STOP_SESSION_ECHO
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 发送消息请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_SEND_MESSAGE_ECHO
            *       
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 打洞请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_PUNCH_HOLE_ECHO
            *       
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 监听会话请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_MONITOR_SESSION_ECHO
            *       
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 建立会话会议请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_CONFERENCE_SESSION_ECHO
            *       
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 会话转移请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_TRANSFER_SESSION_ECHO
            *       
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            */

           /**
            * 查询登陆坐席数请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_QUERY_LOGIN_LIST_ECHO
            *       
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            *       VXI_EVT_ITEM_LOGIN_LIST
            */

           /**
            * 查询坐席状态请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_QUERY_AGENT_STATE_ECHO
            *       
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE   
            *       VXI_EVT_ITEM_AGENT_STATE
            */

           /**
            * 心跳请求操作确认.
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_HEARTBEAT
            *       event_name: VXI_EVT_CHAT_HEARTBEAT_HEAT
            *       
            * body:
            */

           /**
            * 发送二进制数据请求操作确认
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_SEND_BINARY_ECHO
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE
            */

           /**
            * 启动语音对话请求操作确认
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_START_AUDIO_ECHO
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE
            */

           /**
            * 启动语音对话应答请求操作确认
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_ECHO
            *       event_name: VXI_EVT_CHAT_START_AUDIO_REPLY_ECHO
            * body:
            *       VXI_EVT_ITEM_RESULT
            *       VXI_EVT_ITEM_CAUSE
            */


           /**
            * 会话状态改变通知
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_NOTIFY
            *       event_name: VXI_EVT_CHAT_SESSION_STATE_CHG
            *
            * body:
            *       VXI_EVT_ITEM_STATUS
            *       VXI_EVT_ITEM_SESSION_ID
            */

           /**
            * 语音通话状态变化事件
            *
            * header:
            *       domain_name: VXI_EVT_DOMAIN_CHAT
            *       type_name: VXI_EVT_TYPE_NOTIFY
            *       event_name: VXI_EVT_CHAT_AUDIO_STATE_CHG
            *
            * body:
            *       VXI_EVT_ITEM_STATUS
            *       VXI_EVT_ITEM_SESSION_ID
            */


            #endregion
        }
    }
}
